package com.zhang.authoritycenter.service;

import com.zhang.authoritycenter.common.model.dao.authority.AuthorityRoleDO;
import com.zhang.authoritycenter.common.model.dto.authority.AddRoleReqDTO;
import com.zhang.authoritycenter.common.model.dto.authority.RoleQueryPageReqDTO;
import com.zhang.authoritycenter.common.model.dto.authority.UpdateRoleReqDTO;
import com.zhang.authoritycenter.common.model.vo.authority.GetRoleVO;
import com.zhang.sharding.model.PageResponseVO;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author KingHood
 * @since 2023-12-18
 */
public interface IAuthorityRoleService {

    /**
     * 角色信息分页
     *
     * @param in 角色信息
     * @return 角色信息
     * @author zfj
     * @date 2023/12/18
     */
    PageResponseVO<AuthorityRoleDO> queryPage(RoleQueryPageReqDTO in);

    /**
     * 新建角色信息
     *
     * @param in 角色信息
     * @return 角色信息
     * @author zfj
     * @date 2023/12/18
     */
    AuthorityRoleDO addRole(AddRoleReqDTO in);

    /**
     * 获取角色信息
     *
     * @param id 角色信息id
     * @return 角色信息
     * @author zfj
     * @date 2023/12/18
     */
    GetRoleVO getRole(Long id);

    /**
     * 角色信息修改
     *
     * @param in 角色信息
     * @return 角色信息
     * @author zfj
     * @date 2023/12/18
     */
    AuthorityRoleDO updateRole(UpdateRoleReqDTO in);

    /**
     * 批量删除角色信息
     *
     * @param idList 角色id
     * @return 是否删除成功
     * @author zfj
     * @date 2023/12/18
     */
    Boolean deleteRoleBatch(List<Long> idList);

    /**
     * 修改角色状态
     *
     * @param id     角色id
     * @param status 角色新状态
     * @return 修改结果
     * @author zfj
     * @date 2023/12/19
     */
    Boolean updateStatus(Long id, Integer status);

    /**
     * <p>下拉列</p>
     * 查找所有角色
     *
     * @return 查找结果
     * @author zfj
     * @date 2023/12/19
     */
    List<AuthorityRoleDO> getRoleList();
}
